Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] File XML cosa mi sfugge aiutatemi ad individuare l'errore
Forum - C# / VB.NET - [VB.NET] File XML cosa mi sfugge aiutatemi ad individuare l'errore

Avatar
__BlackworM__ (Member)
Pro


Messaggi: 110
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 5:21
Venerdì, 21/08/2009
Ciao a tutti ed in particolare a Lorenzo che in questi giorni proprio non fà altro che risolvermi problemi

allora io sto creando un programma e mi sono bloccato su una funzione.
Il programma dovrebbe scrivere dinamicamente in un file xml il pezzo di codice è questo :

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnScrivi.Click
  2.         Dim ds As New DataSet
  3.  
  4.         'Do un nome al DataSet
  5.         ds.DataSetName = txtNomeDataSet.Text
  6.  
  7.         'Aggiungo una Nuova Tabella
  8.         ds.Tables.Add(txtNomeTabella.Text)
  9.         'Aggiungo gli elementi nella tabella in diverse colonne
  10.  
  11.         Dim i As Integer
  12.  
  13.         For i = 1 To 3
  14.             ds.Tables(txtNomeTabella.Text).Columns.Add(InputBox("Inserisci un campo :"))
  15.             ds.Tables(txtNomeTabella.Text).Rows.Add(InputBox("Inserisci un valore :"))
  16.         Next
  17.  
  18.         ds.WriteXml(Application.StartupPath + "\" & txtNomeFileDaSalvare.Text & ".xml")
  19.  
  20.     End Sub



e fin qui tutto bene ma quando invece provo a dare dei valori ad esempio alla prima richiesta di campo scrivo : nome, richiesta valore : ciccio

alla seconda richiesta di campo scrivo : cognome, richiesta valore : rossi

alla terza richiesta di campo scrivo : eta, richiesta valore : 18

il file xml che dovrebbe comparire sarebbe

Codice sorgente - presumibilmente Plain Text

  1. <?xml version="1.0" standalone="yes"?>
  2. <nomedataset>
  3.   <nometabella>
  4.     <nome>ciccio</nome>
  5.     <cognome>russo</nome>
  6.     <eta>29</nome>
  7.   </nometabella>
  8. </nomedataset>



invece mi scrive questo nel file xml

Codice sorgente - presumibilmente C# / VB.NET

  1. <?xml version="1.0" standalone="yes"?>
  2. <nomedataset>
  3.   <nometabella>
  4.     <nome>ciccio</nome>
  5.   </nometabella>
  6.   <nometabella>
  7.     <nome>russo</nome>
  8.   </nometabella>
  9.   <nometabella>
  10.     <nome>29</nome>
  11.   </nometabella>
  12. </nomedataset>
  13.  
  14. mi chiedo perchè 3 volte nome tabella se glielo do una sola volta ?
  15. perchè prende nome e lo da per tutti i valori ?
  16.  
  17. Spero di essere stato chiaro...


PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 15:59
Venerdì, 21/08/2009
non ne sono sicuro ma guarda questo esempio

Codice sorgente - presumibilmente VB.NET

  1. Dim ds As New Data.DataSet
  2.  
  3. ds.DataSetName = "NuovoDataSet"
  4. ds.Tables.Add("NuovaTabella")
  5.  
  6. ds.Tables("NuovaTabella").Columns.Add("Colonna1")
  7. ds.Tables("NuovaTabella").Columns.Add("Colonna2")
  8. ds.Tables("NuovaTabella").Columns.Add("Colonna3")
  9.  
  10. Dim rowVals(2) As String 'Vettore che conterrà i valori da memorizzare nella riga
  11. rowVals(0) = "Valore1"
  12. rowVals(1) = "Valore2"
  13. rowVals(2) = "Valore3"
  14.  
  15. ds.Tables("NuovaTabella").Rows.Add(rowVals)
  16.  
  17. ds.WriteXml(Application.StartupPath + "\NuovoXML.xml")



qui vengono create le colonne e quando viene aggiunta una riga viene aggiunto un valore per ogni colonna

credo che prima dovresti far inserire tutte le colonne e poi i valori

Ultima modifica effettuata da lorenzo il 21/08/2009 alle 16:06
PM Quote
Avatar
andrea.b89 (Ex-Member)
Pro


Messaggi: 129
Iscritto: 03/03/2009

Segnala al moderatore
Postato alle 21:03
Sabato, 22/08/2009
Il problema è che tu alla riga

Codice sorgente - presumibilmente Plain Text

  1. ds.Tables("tab1").Rows.Add(InputBox("Inserisci un valore :"))



aggiungi una nuova riga e specificando 1 solo valore, quindi succede che tu ogni volta imposti solo il valore della prima colonna.

similmente all'esempio di lorenzo puoi risolvere nel seguente modo

Codice sorgente - presumibilmente VB.NET

  1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  2.         Dim ds As New DataSet
  3.  
  4.         'Do un nome al DataSet
  5.         ds.DataSetName = "ds1"
  6.         'Aggiungo una Nuova Tabella
  7.         ds.Tables.Add("tab1")
  8.         Dim v(2) As String
  9.  
  10.         'Aggiungo le diverse colonne
  11.  
  12.         Dim i As Integer
  13.  
  14.         For i = 1 To 3
  15.             ds.Tables("tab1").Columns.Add(InputBox("Inserisci un campo :"))
  16.  
  17.         Next
  18.  
  19.         'aggiungo i valori di ogni colonna per la riga che aggiungerò
  20.  
  21.         For i = 1 To 3
  22.             v(i - 1) = (InputBox("Inserisci un valore :"))
  23.         Next
  24.        
  25.         ds.Tables("tab1").Rows.Add(v)
  26.  
  27.         ds.WriteXml(Application.StartupPath + "\" & "myxml" & ".xml")
  28.     End Sub



comunque l'xml prodotto dall'esempio è

<?xml version="1.0" standalone="yes"?>
<ds1>
  <tab1>
    <c1>1</c1>
    <c2>2</c2>
    <c3>3</c3>
  </tab1>
</ds1>

Ultima modifica effettuata da andrea.b89 il 22/08/2009 alle 21:20
PM Quote
Avatar
__BlackworM__ (Member)
Pro


Messaggi: 110
Iscritto: 16/08/2008

Segnala al moderatore
Postato alle 4:25
Domenica, 23/08/2009
Ringrazio tutti avete risolto perfettamente il problema !!!
Grazie

PM Quote